From 7915fc1587eb61c64499d025e52ab1c665be44d7 Mon Sep 17 00:00:00 2001 From: Andrew Cooper Date: Wed, 2 Jul 2014 14:46:42 +0200 Subject: [PATCH] minios: fix incorrect {, un}likely() definitions As identified in e5545fb6, likely() and unlikely() must convert their expressions to booleans before comparing to 1 or 0, to avoid truncation issues. While editing this file, add inclusion guards. Signed-off-by: Andrew Cooper Acked-by: Samuel Thibault --- extras/mini-os/include/compiler.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/extras/mini-os/include/compiler.h b/extras/mini-os/include/compiler.h index e35c9d50ff..41882774f9 100644 --- a/extras/mini-os/include/compiler.h +++ b/extras/mini-os/include/compiler.h @@ -1,5 +1,10 @@ +#ifndef __MINIOS_COMPILER_H_ +#define __MINIOS_COMPILER_H_ + #if __GNUC__ == 2 && __GNUC_MINOR__ < 96 #define __builtin_expect(x, expected_value) (x) #endif -#define unlikely(x) __builtin_expect((x),0) -#define likely(x) __builtin_expect((x),1) +#define unlikely(x) __builtin_expect(!!(x),0) +#define likely(x) __builtin_expect(!!(x),1) + +#endif /* __MINIOS_COMPILER_H_ */ -- 2.30.2